GCC = g++ -Wall -W -O
all: TestLecteurSymbole TestLecteurPhraseSimple TestLecteurPhraseAvecTable TestLecteurPhraseAvecArbre

######################################################################################################
# etape 1 - lecteur de symboles 
######################################################################################################
ObjTestLecteurSymbole = LecteurCaractere.o Symbole.o LecteurSymbole.o TestLecteurSymbole.o

LecteurCaractere.o: LecteurCaractere.cpp LecteurCaractere.h
	$(GCC) -c LecteurCaractere.cpp

Symbole.o: Symbole.cpp Symbole.h
	$(GCC) -c Symbole.cpp

LecteurSymbole.o: LecteurSymbole.cpp LecteurSymbole.h Symbole.h LecteurCaractere.h
	$(GCC) -c LecteurSymbole.cpp

TestLecteurSymbole.o: TestLecteurSymbole.cpp LecteurSymbole.h
	$(GCC) -c TestLecteurSymbole.cpp

TestLecteurSymbole: $(ObjTestLecteurSymbole)
	$(GCC) -o TestLecteurSymbole $(ObjTestLecteurSymbole)

######################################################################################################
# etape 2 - lecteur de phrase simple 
######################################################################################################
ObjTestLecteurPhraseSimple = LecteurCaractere.o Symbole.o LecteurSymbole.o LecteurPhraseSimple.o TestLecteurPhraseSimple.o

LecteurPhraseSimple.o: LecteurPhraseSimple.cpp LecteurPhraseSimple.h Symbole.h LecteurSymbole.h
	$(GCC) -c LecteurPhraseSimple.cpp
	
TestLecteurPhraseSimple.o: TestLecteurPhraseSimple.cpp LecteurPhraseSimple.h
	$(GCC) -c TestLecteurPhraseSimple.cpp
	
TestLecteurPhraseSimple: $(ObjTestLecteurPhraseSimple)
	$(GCC) -o TestLecteurPhraseSimple $(ObjTestLecteurPhraseSimple)
	
######################################################################################################
# etape 3 - lecteur de phrase avec table des symboles 
######################################################################################################
ObjTestLecteurPhraseAvecTable = LecteurCaractere.o Symbole.o LecteurSymbole.o SymboleValue.o TableSymboles.o LecteurPhraseAvecTable.o TestLecteurPhraseAvecTable.o

SymboleValue.o: SymboleValue.cpp SymboleValue.h Symbole.h
	$(GCC) -c SymboleValue.cpp

TableSymboles.o: TableSymboles.cpp TableSymboles.h SymboleValue.h 
	$(GCC) -c TableSymboles.cpp

LecteurPhraseAvecTable.o: LecteurPhraseAvecTable.cpp LecteurPhraseAvecTable.h LecteurSymbole.h TableSymboles.h
	$(GCC) -c LecteurPhraseAvecTable.cpp

TestLecteurPhraseAvecTable: $(ObjTestLecteurPhraseAvecTable)
	$(GCC) -o TestLecteurPhraseAvecTable $(ObjTestLecteurPhraseAvecTable)
	
######################################################################################################
# etape 4 - lecteur de phrase avec table des symboles et arbre
######################################################################################################
ObjTestLecteurPhraseAvecArbre = LecteurCaractere.o Symbole.o LecteurSymbole.o SymboleValue.o TableSymboles.o Arbre.o LecteurPhraseAvecArbre.o TestLecteurPhraseAvecArbre.o

Arbre.o: Arbre.h Arbre.cpp Symbole.h SymboleValue.h
	$(GCC) -c Arbre.cpp

LecteurPhraseAvecArbre.o: LecteurPhraseAvecArbre.cpp LecteurPhraseAvecArbre.h Symbole.h LecteurSymbole.h TableSymboles.h Arbre.h
	$(GCC) -c LecteurPhraseAvecArbre.cpp

TestLecteurPhraseAvecArbre.o: TestLecteurPhraseAvecArbre.cpp LecteurPhraseAvecArbre.h
	$(GCC) -c TestLecteurPhraseAvecArbre.cpp
	
TestLecteurPhraseAvecArbre: $(ObjTestLecteurPhraseAvecArbre)
	$(GCC) -o TestLecteurPhraseAvecArbre $(ObjTestLecteurPhraseAvecArbre)
	